Projekt Pronal Projekt Pronal

Kazalo:
Sofinasiranje projekta
Starejši - učbenik...
Tekmovanja...
Tekmovanja - dopolni...
Tekmovanja - Parsons...
Tekmovanja - popravi...
Starejši - zbirka nalog
Funkcije
If stavek
Izpisi
Množice
Nizi
Pisanje in popravljanje programa
Seznami in nizi
Slovarji
Spoznajmo Python
Uvod v funkcije
Zanka for
Zanka while
Pisanje in popravljanje programa

Pisanje in popravljanje programa


Razsute kartice

1. podnaloga

Včasih so računalniške programe pisali na kartice. Na vsaki kartici je bil en stavek. Ni bilo redko, da se je kdo spotaknil ter stresel šop kartic. Program je bilo treba ponovno urediti.

Sedaj imamo podoben problem. Virus je v naši datoteki premešal vrstice. Program bi moral podane sekunde spremeniti v dneve, ure, minute in sekunde.

# preberemo podatke
minute = min_zacasne % 60        # ostanek od deljenja s 60 so minute ostalo že ure
print(sek_zacasne,'sekund je natanko',dnevi, 'dni,', ure, 'ur,', minute, 'minut in', sekunde,'sekund.')
ure_zacasne = min_zacasne // 60  # celi del od deljenja s 60 so vse ure
ure = ure_zacasne % 24           # ostanek od deljenja s 24 so ure ostalo dnevi
print('Program bo spremenil sekunde v dneve, ure, minute in sekunde.')
sekunde = sek_zacasne % 60       # ostanek od deljenja s 60 so sekunde
dnevi = ure_zacasne // 24        # celi del deljenja s 24 so dnevi
sek_zacasne = int(input('Vnesi sekunde: '))
min_zacasne = sek_zacasne // 60  # celi del deljenja so vse minute
# izpišemo rezultat

Uredite vrstice tako, da bo program smiselno deloval.

Uradna rešitev

# preberemo podatke
print('Program bo spremenil sekunde v dneve, ure, minute in sekunde.')
sek_zacasne = int(input('Vnesi sekunde: '))
sekunde = sek_zacasne % 60       # ostanek od deljenja s 60 so sekunde
min_zacasne = sek_zacasne // 60  # celi del deljenja so vse minute
minute = min_zacasne % 60        # ostanek od deljenja s 60 so minute ostalo že ure
ure_zacasne = min_zacasne // 60  # celi del od deljenja s 60 so vse ure
ure = ure_zacasne % 24           # ostanek od deljenja s 24 so ure ostalo dnevi
dnevi = ure_zacasne // 24        # celi del deljenja s 24 so dnevi
# izpišemo rezultat
print(sek_zacasne,'sekund je natanko',dnevi, 'dni,', ure, 'ur,', minute, 'minut in', sekunde,'sekund.')

Hišnik

Hišnik mora vsak mesec očistiti bazen. Da ga lahko očisti, mora najprej iz njega izčrpati vodo. Ker je bolj lene sorte, bi med iztekanjem vode, ki traja kar nekaj časa, raje odšel v bližnjo kavarno na pogovor s prijateljem, namesto da bi stražil bazen. Spodaj je program, ki za bazen velikosti $2 m \times 3 m \times 9 m$ izračuna, koliko sekund se bo bazen praznil, če vsako sekundo iz bazena izteče $23 L$ vode. Kubični decimeter vode je $1 L$ vode.

# Vnos dimenzij bazena.
globina = 2
sirina = 3
dolzina = 9
# Pretvorba dimenzij bazena v dm.
dolzina_dm = dolzina * 10
sirina_dm = sirina * 10
globina_dm = globina * 10
# Izračun prostornine bazena v kubičnih dm.
prostornina_dm = dolzina_dm * sirina_dm * globina_dm
# Vnos pretoka vode v sekundi.
prostornina_izteka_v_eni_sekundi = 23
# Izračun časa praznjenja bazena.
cas_praznjenja_v_sekundah = prostornina_dm / prostornina_izteka_v_eni_sekundi
# Izpis rezultata.
print('Bazen velikosti', dolzina, 'm ×', sirina, 'm ×', globina, 'm', 'se bo praznil', cas_praznjenja_v_sekundah, 'sekund.')

1. podnaloga

Program spremenite tako, da bo hišnik lahko vnesel poljubne dimenzije bazena. Dimenzije so v celih metrih.

Uradna rešitev

# Vnos dimenzij bazena.
dolzina = int(input("Dolžina: "))
sirina = int(input("Širina: "))
globina = int(input("Globina: "))

# Pretvorba dimenzij bazena v dm.
dolzina_dm = dolzina * 10
sirina_dm = sirina * 10
globina_dm = globina * 10

# Izračun prostornine bazena v kubičnih dm.
prostornina_dm = dolzina_dm * sirina_dm * globina_dm

# Vnos pretoka vode v sekundi.
prostornina_izteka_v_eni_sekundi = 23

# Izračun časa praznjenja bazena.
cas_praznjenja_v_sekundah = prostornina_dm / prostornina_izteka_v_eni_sekundi

# Izpis rezultata.
print('Bazen velikosti', dolzina, 'm ×', sirina, 'm ×', globina, 'm', 'se bo praznil', cas_praznjenja_v_sekundah, 'sekund.')

2. podnaloga

Hišnik je zamenjal službo. A tudi tu imajo bazen in hišnik ga mora spet čistiti. Ves vesel je zagnal svoj program, a je pri merjenju ugotovil, da je globina bazena $2.34 m$, hitrost iztekanja pa je enaka. Pomagajte mu in program popravite tako, da bo sedaj sprejel podatke v obliki decimalnih števil. Potrudite se in rezultate zaokrožite na dve decimalni mesti.

Namig: oglejte si, kaj počneta float(12.45) in print("{:.2f}.format(3.1415926)), oziroma na spletu poiščite "float Python 3" in "format string Python 3".

Uradna rešitev

# Vnos dimenzij bazena.
dolzina = int(input("Dolžina: "))
sirina = int(input("Širina: "))
globina = float(input("Globina: "))

# Pretvorba dimenzij bazena v dm.
dolzina_dm = dolzina * 10
sirina_dm = sirina * 10
globina_dm = globina * 10

# Izračun prostornine bazena v kubičnih dm.
prostornina_dm = dolzina_dm * sirina_dm * globina_dm

# Vnos pretoka vode v sekundi.
prostornina_izteka_v_eni_sekundi = 23

# Izračun časa praznjenja bazena.
cas_praznjenja_v_sekundah = prostornina_dm / prostornina_izteka_v_eni_sekundi

# Izpis rezultata.
print('Bazen velikosti', dolzina, 'm ×', sirina, 'm ×', globina, 'm', 'se bo praznil', '{:.2f}'.format(cas_praznjenja_v_sekundah), 'sekund.')

3. podnaloga

Hišnik je z vašim programom sicer zelo zadovoljen, a zadnjič se je pri pretvarjanju sekund v minute uštel in je zato prišel nazaj k bazenu cele pol ure prezgodaj. Zato prosi, če mu namesto časa v sekundah lahko izpišete čas v urah, minutah in sekundah. Tukaj boste morali sekunde iz decimalne oblike pretvoriti v celo število. Ugotovite, kako to storimo v Pythonu.

Primer delovanja programa:

Dolžina: 4
Širina: 6
Globina: 2.34
Bazen velikosti 4 m × 6 m × 2.34 m se bo praznil 0 ur 40 minut in 41 sekund.

Uradna rešitev

# Vnos dimenzij bazena.
dolzina = int(input("Dolžina: "))
sirina = int(input("Širina: "))
globina = float(input("Globina: "))

# Pretvorba dimenzij bazena v dm.
dolzina_dm = dolzina * 10
sirina_dm = sirina * 10
globina_dm = globina * 10

# Izračun prostornine bazena v kubičnih dm.
prostornina_dm = dolzina_dm * sirina_dm * globina_dm

# Vnos pretoka vode v sekundi.
prostornina_izteka_v_eni_sekundi = 23

# Izračun časa praznjenja bazena.
cas_praznjenja_v_sekundah = prostornina_dm / prostornina_izteka_v_eni_sekundi

sekunde = int(cas_praznjenja_v_sekundah % 60)
minute_zacasne = cas_praznjenja_v_sekundah // 60
minute = int(minute_zacasne % 60)
ure = int(minute_zacasne // 60)

# Izpis rezultata.
print('Bazen velikosti', dolzina, 'm ×', sirina, 'm ×', globina, 'm', 'se bo praznil', ure, 'ur', minute, 'minut in', sekunde, 'sekund.')
Mesto objave ob koncu projekta 15.9.2018